// 对axios进行二次封装
import axios from "axios";
import { Message } from "element-ui";
import store from "@/store";
import router from "@/router";
const requests = axios.create({
    // 配置对象
    baseURL:"http://localhost:8081/api/",
    timeout:5000,

})

// 请求拦截器
requests.interceptors.request.use((config)=>{
    // 请求拦截器携带token
    if(store.state.user.userInfo.token){
        config.headers.Authorization = `Bearer ${store.state.user.userInfo.token}`
    }
    return config
},
(err)=>{
    return Promise.reject(err)
})

// 响应拦截器
requests.interceptors.response.use((res)=>{
    // 响应成功的回调函数
    return res.data
},
(err)=>{
    // 响应失败的回调函数
    // 统一错误提示
    Message({
        type:'error',
        message:err.response.data.msg
    })

    // 401 token失效处理
    if(err.response.status === 401){
        // 1.清除本地存储数据
        store.commit('user/clearUserInfo');
        // 2.跳转到登录页面
        router.push('/login');
    }
    return Promise.reject(err)
})

// 对外暴露
export default requests;
